package com.itheima.reggie.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.reggie.entity.Orders;
import com.itheima.reggie.service.OrdersService;
import com.itheima.reggie.service.PayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;

@Service
@Slf4j
public class PayServiceImpl implements PayService {
    //支付成功后要跳转的页面
    @Value("${alipay.returnUrl}")
    private String returnUrl;
    @Autowired
    private OrdersService ordersService;

    @Override
    public Object pay(Long id) throws Exception {

        //根据订单id查询订单信息
        LambdaQueryWrapper<Orders> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Orders::getId,id);
        Orders order = ordersService.getOne(wrapper);

        log.info("下单信息:{}",order);
        //调用sdk，发起支付
        AlipayTradePagePayResponse response = Factory.Payment
                //选择网页支付平台
                .Page()
                //调用支付方法，设置订单名称、我们自己系统中的订单号、金额、回调页面
                .pay(order.getConsignee()+"的瑞吉外卖",  //订单名称
                        order.getNumber(),                        //订单号
                        order.getAmount().toString(),             //订单总金额
                        returnUrl);                               //支付成功后的回调页面

        //这里的response.body，就是一个可以直接加载的html片段，
        // 这里为了简单我直接返回这个片段，前端直接使用
        return response.body;

    }
}
